Django অ্যাপ্লিকেশন তৈরি করার সময়, এর Debug Mode এবং Security Settings খুবই গুরুত্বপূর্ণ। এগুলো Django অ্যাপ্লিকেশনের নিরাপত্তা এবং ডেভেলপমেন্ট পরিবেশে কার্যকারিতা নিশ্চিত করে। এখানে আমরা Django-র Debug Mode এবং Security Settings সম্পর্কিত বিষয়গুলো বিস্তারিতভাবে আলোচনা করব।
Debug Mode
Django-তে Debug Mode ডেভেলপমেন্ট এবং ডিবাগিংয়ের জন্য ব্যবহৃত হয়। যখন এটি সক্রিয় থাকে, তখন Django স্বয়ংক্রিয়ভাবে অ্যাপ্লিকেশনের ত্রুটি ও সমস্যাগুলি প্রদর্শন করে, যা ডেভেলপারদের দ্রুত সমস্যার সমাধান করতে সাহায্য করে। তবে এটি প্রোডাকশন (Production) পরিবেশে সক্রিয় রাখা উচিত নয়, কারণ এতে সিস্টেমের নিরাপত্তা ঝুঁকিতে পড়তে পারে।
১. Debug Mode চালু করা
ডিফল্টভাবে, Django প্রজেক্ট তৈরির পর Debug Mode সক্রিয় থাকে। এটি আপনার settings.py ফাইলে DEBUG কনফিগারেশন দ্বারা নিয়ন্ত্রিত হয়।
settings.py ফাইলে DEBUG এর মান যদি True থাকে, তাহলে Debug Mode চালু থাকে:
DEBUG = True
২. Debug Mode বন্ধ করা
প্রোডাকশন পরিবেশে, Debug Mode বন্ধ করতে DEBUG এর মান False করতে হয়:
DEBUG = False
Debug Mode-এর ঝুঁকি
- ডাটা লিক (Data Leak): যদি
DEBUG = Trueথাকে, তবে Django অ্যাপ্লিকেশনটি ত্রুটির তথ্য এবং স্ট্যাক ট্রেস (stack trace) ব্যবহারকারীকে দেখাতে পারে, যা সুরক্ষিত নয়। - অফলাইনে প্রদর্শন: Debug Mode চালু থাকলে, Django-র সাথে সংযুক্ত সার্ভারটি সকল ত্রুটি এবং লোগ তৈরি করে, যা সম্ভাব্য আক্রমণকারীদের জন্য দুর্বলতা তৈরি করতে পারে।
অতএব, Debug Mode প্রোডাকশন পরিবেশে কখনোই চালু রাখা উচিত নয়।
Security Settings
Django অ্যাপ্লিকেশনটি সুরক্ষিত রাখার জন্য কিছু নির্দিষ্ট Security Settings প্রয়োজন। কিছু গুরুত্বপূর্ণ নিরাপত্তা কনফিগারেশন এইরকম:
১. ALLOWED_HOSTS
এই সেটিংটি Django-তে ব্যবহৃত সাইটের host নামগুলো নির্ধারণ করে। এটি প্রোডাকশন পরিবেশে বিশেষভাবে গুরুত্বপূর্ণ, কারণ এটি ম্যালিসিয়াস (অবৈধ) ডোমেইন থেকে HTTP রিকোয়েস্ট ব্লক করে।
settings.py ফাইলে ALLOWED_HOSTS এ আপনার সাইটের নাম অথবা আইপি অ্যাড্রেস লিখুন:
ALLOWED_HOSTS = ['www.yoursite.com', 'yoursite.com', '127.0.0.1']
যদি আপনি ALLOWED_HOSTS সঠিকভাবে কনফিগার না করেন, তাহলে আপনার Django অ্যাপ্লিকেশন হ্যাকিংয়ের শিকার হতে পারে।
২. SECURE_SSL_REDIRECT
আপনার Django সাইটে নিরাপদ HTTPS সংযোগে রিডাইরেক্ট করার জন্য এই সেটিংটি ব্যবহার করা হয়। যখন এটি True হয়, তখন HTTP রিকোয়েস্ট স্বয়ংক্রিয়ভাবে HTTPS এ রিডাইরেক্ট হবে।
SECURE_SSL_REDIRECT = True
এটি শুধু তখনই কাজ করবে যখন আপনার সাইটে SSL সার্টিফিকেট ইনস্টল করা থাকে।
৩. SECURE_BROWSER_XSS_FILTER
এই সেটিংটি ব্রাউজারকে সিএসএস (Cross-Site Scripting) আক্রমণ ব্লক করার নির্দেশ দেয়। এটি True থাকলে, ব্রাউজার নিজেই সিএসএস আক্রমণ রোধ করবে।
SECURE_BROWSER_XSS_FILTER = True
৪. SECURE_CONTENT_TYPE_NOSNIFF
এই সেটিংটি ব্রাউজারকে মেনু অথবা অন্য ধরনের কনটেন্ট স্নিফিং থেকে বিরত রাখে। এটি True করলে কনটেন্ট টাইপ গুলি সঠিকভাবে যাচাই করা হবে, যাতে নিরাপত্তার ঝুঁকি কমে।
SECURE_CONTENT_TYPE_NOSNIFF = True
৫. CSRF_COOKIE_SECURE
CSRF (Cross-Site Request Forgery) আক্রমণ থেকে সুরক্ষা প্রদান করার জন্য এই সেটিংটি ব্যবহৃত হয়। যদি True থাকে, তবে CSRF টোকেনটি কেবলমাত্র HTTPS কানেকশনের মাধ্যমে প্রেরিত হবে।
CSRF_COOKIE_SECURE = True
৬. SESSION_COOKIE_SECURE
এটি সেট করলে, Django Session Cookie গুলি শুধুমাত্র HTTPS কানেকশনে পাঠাবে, যা নিরাপত্তা বৃদ্ধি করবে।
SESSION_COOKIE_SECURE = True
৭. X_FRAME_OPTIONS
এই সেটিংটি আপনার Django অ্যাপ্লিকেশনকে clickjacking আক্রমণ থেকে রক্ষা করে। এটি DENY বা SAMEORIGIN হতে পারে।
X_FRAME_OPTIONS = 'DENY'
DENY: এটি আপনার অ্যাপ্লিকেশনকে অন্য কোনো ওয়েবসাইটে iframe হিসেবে লোড হতে দেয় না।SAMEORIGIN: এটি কেবলমাত্র একই ডোমেইনে থাকা ওয়েবসাইটে iframe হিসাবে লোড হতে অনুমতি দেয়।
৮. SECURE_HSTS_SECONDS
HTTP Strict Transport Security (HSTS) সিকিউরিটি ফিচারটি ব্রাউজারকে HTTPS ব্যবহার করতে বাধ্য করে। এটি প্রোডাকশন পরিবেশে ব্যবহার করা উচিত।
SECURE_HSTS_SECONDS = 31536000 # 1 year
এটি ব্রাউজারকে নির্দেশ দেয় যে তারা শুধুমাত্র HTTPS কানেকশনই ব্যবহার করবে, এবং এটি ১ বছরের জন্য কার্যকর থাকবে।
৯. SECURE_HSTS_INCLUDE_SUBDOMAINS
এই সেটিংটি, HSTS নীতি সমস্ত সাবডোমেইনেও প্রয়োগ করবে।
SECURE_HSTS_INCLUDE_SUBDOMAINS = True
সারাংশ
Debug Mode প্রোডাকশন পরিবেশে False রাখতে হয় যাতে কোনো সংবেদনশীল তথ্য বাইরে না চলে যায়। সঠিক Security Settings কনফিগার করে, আপনি Django অ্যাপ্লিকেশনটি নিরাপদ রাখতে পারেন। এসব নিরাপত্তা সেটিংস প্রোডাকশন পরিবেশে ডাটা নিরাপত্তা এবং আক্রমণ থেকে রক্ষা করতে গুরুত্বপূর্ণ ভূমিকা পালন করে।
Read more